An instruction set, or instruction set architecture (ISA), is the part of the computer architecture related to programming, and may include the native data types, instructions, register architecture, addressing modes, memory architecture, interrupt and exception handling, and external input and output (I/O). The term instruction generally refers herein to macroinstructions—that is instructions that are provided to the processor (or instruction converter that translates (e.g., using static binary translation, dynamic binary translation including dynamic compilation), morphs, emulates, or otherwise converts an instruction to one or more other instructions to be processed by the processor) for execution—as opposed to micro-instructions or micro-operations (micro-ops)—that is the result of a processor's decoder decoding macroinstructions.
The ISA is distinguished from the micro-architecture, which is the internal design of the processor implementing the instruction set. Processors with different micro-architectures can share a common instruction set. For example, Intel® Core™ processors and processors from Advanced Micro Devices, Inc. of Sunnyvale Calif. implement nearly identical versions of the x86 instruction set (with some extensions that have been added with newer versions), but have different internal designs. For example, the same register architecture of the ISA may be implemented in different ways in different micro-architectures using well-known techniques, including dedicated physical registers, one or more dynamically allocated physical registers using a register renaming mechanism, etc.
In conventional systems, the operation systems during a context switch save only the processor architectural states, but not the micro-architectural context. The architectural context generally includes contents of the architectural registers, which are visible to the software/programmer. The micro-architectural context includes contents of reorder buffers, retirement registers and performance monitoring counters, which are not visible to the software/programmer. The micro-architectural context contains performance data, including power and energy usage data as well as other power management related parameters that can be used by the processor for power management. As a result, when a process or thread returns to execution, the processor needs to collect performance statistics from scratch. This results in inefficiency in processor operations during the initial period of a context switch.